<?php

class ApostaController extends CController
{


    private $apostas="";	

    public function actionCadastrar()
    {
        

        if(isset($_POST['Aposta']))
        {
            $apostas=$_POST['Aposta'];
            $this->runApostas($apostas);

            if($this->verificaInconsistencias($this->apostas))
            {
                $apostadores = Apostador::model()->findAll();
                $this->render('verifica_apostadores',array(
                    "apostadores"=>$apostadores,
                    "apostas"=>$this->apostas,
                ));
            }
            /*
            echo "<pre>";
            var_dump($this->apostas);
            echo "</pre>";
            */

        }
        else

        $this->render('cadastro');
    }


    private function runApostas($apostas)
    {


        $apostas=utf8_decode(str_replace("< br/>", chr(13).chr(10), trim($apostas)));
        $aux=explode(chr(13).chr(10).chr(13).chr(10), $apostas);
        unset($apostas);
        foreach($aux as $val)
        {
            $aposta= $this->getApostaApostador(trim($val));


            $apostas[]= $this->normalizaApostas($aposta);

        }

        $apostas=$this->verificaInconsistencias($apostas);

        $this->apostas=$apostas;

    
    }

    private function verificaInconsistencias($apostas)
    {

        $apostadoresTemp = ApostadorTemp::model()->findAll();

        //$apostadores = Apostador::model()->findAll();


        foreach($apostas as $chave=>$aposta)
        {
            foreach($apostadoresTemp as $temp)
            {
                if($aposta["id_temp"]==$temp->id)
                {
                    if($temp->id_apostador=="")
                        $apostas[$chave]["action"]="verificar";
                    else
                    {
                        $apostas[$chave]["id"]=(int) $temp->id_apostador;
                        $apostas[$chave]["action"]=NULL;
                    }
                }
            }
        }

        return $apostas;

    }

    private function pendenciasApostador($apostas)
    {
        foreach($apostas as $val)
            if($val["action"]=="verificar")
                return true;

        return false;        
    }

    private function getApostaApostador($aposta)
    {
        $aux=explode(chr(13).chr(10), $aposta);

        $apostador["nome"]=$aux[0];
        $apostador["apostou"]=true;
        unset($aux[0]);

        foreach($aux as $val)
        {
            if($val=="Nenhum palpite cadastrado.")
            {
                $apostador["apostou"]=false;
            }
            else
            {
                $apostador["jogos"][]=$this->getJogoAposta(trim($val));
            }
        }

        return $apostador;

    }

    private function getJogoAposta($jogo)
    {
        $aux=explode("X", $jogo);

        $time_1= explode(" ", trim($aux[0]));        
        $time_2= explode(" ", trim($aux[1]));

        $gol_1= $time_1[count($time_1)-1];
        $gol_2= $time_2[0];

        $time_1= str_replace($gol_1, "", $aux[0]);
        $time_2= str_replace($gol_2, "", $aux[1]);

        unset($jogo);

        $jogo["A"]= trim($time_1);
        $jogo["B"]= trim($time_2);
        $jogo["Resultado_A"]= (int) $gol_1;
        $jogo["Resultado_B"]= (int) $gol_2;

        return $jogo;
    }


    private function normalizaApostas($aposta)
    {


        //echo $aposta["nome"];

        $apostadores = ApostadorTemp::model()->cache(2)->findAll();

        $achou=false;
        foreach($apostadores as $val)
        {
            if($val->nome==$aposta["nome"])
            {
                $achou=true;  
                $aposta["id_temp"]=(int)$val->id;
            }
        }

        if(!$achou)
        {
            $model=new ApostadorTemp;
            $model->nome=$aposta["nome"];
            $model->save();
            $aposta["id_temp"]=(int)$model->id;
        }

        return $aposta;
    }


    
}